package cn.kgc.spring.service.impl;

import cn.kgc.spring.service.TeacherService;

/**
 * @author 课工场
 * @date 2024/4/29
 * @description
 * 问题分析
 * 1.  为了实现业务功能的增强   不断在修改源代码
 * 2.  为了实现业务功能的增强    出现了大量代码冗余
 *
 *  是否可以不修改源码 实现代码功能增强
 *
 *  23种设计模式中  代理模式
 *  1.静态代理
 *      1. 创建一个代理类 代理类要和被代理对象实现相同的接口
 *      2. 代理类需要依赖被代理对象
 *
 *      注：   已经可以实现不修改源码实现代码功能增强   但是代码依然存在冗余
 *            使用静态代理方式 会导致代码的维护难度倍增
 *  2.动态代理
 *     2.1 JDK   动态代理      基于接口的代理方案
 *              jdk的动态代理可以基于和被代理对象相同的接口动态生成被代理对象
 *              mybatis   -> xxxMapper  getMapper(interface)    xxxProxy
 *     2.2 cglib 动态代理     基于父子类的代理
 *              在程序运行的过程中 给被代理类生成子类   Student
 */
public class TeacherServiceImpl implements TeacherService {


    @Override
    public String teachOnline(String course) {

        System.out.println(course+"课程线上授课进行中...");

        return course;
    }

    @Override
    public String teachOffline(String course) {

        System.out.println(course+"课程线下授课进行中...");

        return course;
    }

}
